1
选择要保留的行
DSAI2202Lab 7: Reasoning Across Relationships

UniLearn 的注册系统和 LMS 中的学生 ID 并不一致。团队需要生成多份报表,每一份对 “哪些源数据行必须出现?”

复用实验 6 的数据库

如果你已在实验 6 中运行过 lab6_7_setup.sql ,请保留这些数据。否则,请在 pgAdmin 中打开助教提供的共享安装文件并运行一次。在每次新建 Query Tool 连接时选择 lab6_7 。

从你熟悉的连接开始

  1. 查看 students 和 lms_roster:22 个注册系统 ID 和 6 个 LMS ID。
  2. 运行实验 6 中匹配规则所用的 INNER JOIN。
  3. 找出同时存在于两个来源中的四个 ID。
  4. 解释为什么该结果不可能是任一来源的完整列表。

五项报表需求

列出共有账户;保留每位注册学生;保留每个 LMS 账户;核对两个来源;生成学生–课程组合。你需要针对这些需求编写 INNER、LEFT、RIGHT、FULL 和 CROSS JOIN 查询。

✍️ 推测缺失的上下文
S103 已注册但没有 LMS 账户。S901 已导入 LMS 但不在注册系统中。在一份完整的报表中,它们各自应归入哪一部分?
共有账户
SET search_path TO lab6_7;

SELECT s.student_id AS registry_id, s.student_name,
       r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
  ON s.student_id = r.student_id
ORDER BY s.student_id;
核对匹配到的 ID

共四行:S101、S102、S105 和 S121。每个 ID 在两张表中都是唯一的,因此每对匹配项只出现一次。这份报表仅包含共有账户。

Uma(S121)虽然没有选课记录,但拥有 LMS 账户。账户匹配并不能证明其参与了课程。